﻿using System;
using System.Windows.Forms;
using OrionApplication.OrionLib;
using OrionApplication.OrionLib.Dao;
using OrionApplication.OrionLib.Orion;

namespace OrionApplication.OrionForm
{
    public partial class OrionUserForm : OrionBaseDoubleForm
    {
        public OrionUserForm()
        {
            dao = new DaoOrionUser();
            InitializeComponent();
        }

        public OrionUserForm(string titre)
            : base(titre)
        {
            dao = new DaoOrionUser();
            InitializeComponent();
        }

        private void RempliCbGroupe()
        {
            DaoOrionGroup daoG = new DaoOrionGroup();
            this.kCbGroupe.DataSource = daoG.SelectAll(true);
        }

        private void RempliForm(OrionUser ou)
        {
            kTbNom.Text = ou.Nom;
            kTbPrenom.Text = ou.Prenom;
            kTbLogin.Text = ou.Login;
            kTbMotDePasse.Text = ou.Password;
            kCbMenu.Cb.SelectedValue = ou.OrionMenuId;
            kCbGroupe.SelectedValue = ou.OrionGroupId;
        }

        private OrionUser RempliObject()
        {
            OrionUser retour = new OrionUser();
            retour.Nom = kTbNom.Text;
            retour.Prenom = kTbPrenom.Text;
            retour.Login = kTbLogin.Text;
            retour.Password = kTbMotDePasse.Text;
            retour.OrionMenuId = Convert.ToInt32(kCbMenu.Cb.SelectedValue);
            retour.OrionGroupId = Convert.ToInt32(kCbGroupe.SelectedValue);
            return retour;
        }

        private void DupliqueEnregistrement()
        {
            if (kDgv.SelectedRows.Count > 0)
            {
                if (OrionOutils.ChoixOuiNon(OrionConfBase.ConfirmDuplique) == DialogResult.Yes)
                {
                    OrionUser ou = ((DaoOrionUser)dao).SelectById(Convert.ToInt32(kDgv.SelectedRows[0].Cells["OrionId"].Value));
                    ou = ((DaoOrionUser)dao).Insert(ou);
                    this.RempliKDgv();
                    this.FocusSur(ou.OrionId);
                }
            }
            else
                OrionOutils.Alerte(OrionConfBase.AucuneLigneSelectionnee);
        }

        private void SauvegardeForm()
        {
            OrionUser ou = this.RempliObject();
            if (kLblMode.Text == OrionConfBase.OrionModeInsert)
                ou = ((DaoOrionUser)dao).Insert(ou);
            else
            {
                if (kDgv.SelectedRows.Count > 0)
                {
                    ou.OrionId = Convert.ToInt32(kDgv.SelectedRows[0].Cells["OrionId"].Value);
                    ou = ((DaoOrionUser)dao).Update(ou);

                }
                else
                    OrionOutils.Alerte(OrionConfBase.AucuneLigneSelectionnee);
            }
            this.RempliKDgv();
            this.FocusSur(ou.OrionId);
        }

        public void RowEnter()
        {
            if (kDgv.SelectedRows.Count > 0)
            {
                OrionUser ou = ((DaoOrionUser)dao).SelectById(Convert.ToInt32(kDgv.SelectedRows[0].Cells["OrionId"].Value));
                this.RempliForm(ou);
            }
        }

        private void btnSpecActuGroupe_Click(object sender, EventArgs e)
        {
            this.RempliCbGroupe();
        }
    }
}
